package controller;

import dtos.*;
import persistence.controllers.HbtProveedorController;
import model.proveedor.Proveedor;

public class CPR{ //extends UnicastRemoteObject implements CPR_TDA{

	private static CPR instance;
	
	private CPR()
	{}

	public static CPR getInstance()
	{
		if(instance == null)
			instance = new CPR();
		
		return instance;		
	}
	
	//Mati
	private boolean existeProveedor(String nroCuit, int codigo)
	{
		return buscarProveedor(nroCuit,codigo) != null;
	}
	
	private Proveedor buscarProveedor(String nroCuit, int codigo)
	{
		Proveedor proveedor = null;
				
		if (!nroCuit.equals(""))
			proveedor = HbtProveedorController.getInstance().obtenerProveedorPorCuit(nroCuit);
		else
		{
			proveedor = HbtProveedorController.getInstance().obtenerProveedorPorCodigo(codigo);
		}	
		return proveedor;
	}
	
	public boolean altaProveedor(String razSoc,String nroCuit)
	{
		if (!existeProveedor(nroCuit,0))
		{
			Proveedor proveedor = new Proveedor(0,razSoc,nroCuit);
			HbtProveedorController.getInstance().grabarProveedor(proveedor);
		}
		else
			return false;
		
		return true;
	}
	
	public boolean altaProveedor(ProveedorDTO proveedorDto)
	{	
		if (!existeProveedor(proveedorDto.nroCuit, proveedorDto.codigo))
		{
			Proveedor proveedor = new Proveedor(proveedorDto);
			HbtProveedorController.getInstance().grabarProveedor(proveedor);
		}
		else
			return false;		
		
		return true;
	}
	
	public boolean bajaProveedor(int codigo,String nroCuit)
	{	
		Proveedor proveedor = buscarProveedor(nroCuit,codigo);
		if (proveedor != null)
		{
			HbtProveedorController.getInstance().borrarProveedor(proveedor);
		}
		else
			return false;		
		
		return true;
	}
}
